package com.xbongbong.pro.message.model;/*/*/


import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.paas.toolbox.wrap.IModel;
import com.xbongbong.message.domain.entity.PushLinkEntity;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * Description: PushLinkModel interface
 * @author 魏荣杰
 * @date 2019/1/6 1:13
 * @version v1.0
 * @since v1.0
 */
public interface PushLinkModel extends IModel<PushLinkEntity> {

    /**
     * Description:插入数据
     * @param entity PushLinkEntity
     * @return java.lang.Integer
     * @throws XbbException XbbException
     * @author 魏荣杰
     * @date 2019/2/20 9:30
     * @since v1.0
     */
    @Override
    Integer insert(PushLinkEntity entity) throws XbbException;
    /**
     * Description:更新数据
     * @param entity PushLinkEntity
     * @return java.lang.Integer
     * @throws XbbException XbbException
     * @author 魏荣杰
     * @date 2019/2/20 9:31
     * @since v1.0
     */
    @Override
    Integer update(PushLinkEntity entity) throws XbbException;
    /**
     * Description: 根据参数查询pushlink数据
     * @param param 查询参数
     * @return java.util.List
     * @author 魏荣杰
     * @date 2019/2/20 9:32
     * @since v1.0
     */
    @Override
    List<PushLinkEntity> findEntitys(Map<String, Object> param);
    /**
     * Description: 根据参数查询pushlink数据数量
     * @param param 查询参数
     * @return java.util.List
     * @author 魏荣杰
     * @date 2019/2/20 9:32
     * @since v1.0
     */
    @Override
    Integer getEntitysCount(Map<String, Object> param);

    /**
     * Description: 批量插入pushlink的数据
     * @param pushLinkList pushLinkEntity的List
     */
    void insertBatch(ArrayList<PushLinkEntity> pushLinkList);

    /**
     * Description: 保存pushLink的数据
     * @param entity PushLinkEntity
     * @return java.lang.Integer 保存后的数据库id
     * @throws XbbException XbbException
     */
    Integer save(PushLinkEntity entity) throws XbbException;

    /**
     * Description: 根据id删除pushlink数据
     * @param key 数据库id值
     * @param corpid 公司id
     * @return java.lang.Integer 操作的数据库id
     */
    Integer deleteByKey(Integer key, String corpid);

    /**
     * Description: 根据id获取pushlink数据
     * @param key 数据库id值
     * @param corpid 公司id
     * @return com.xbongbong.message.domain.entity.PushLinkEntity
     */
    PushLinkEntity getByKey(Integer key, String corpid);

    /**
     * Description:根据传参标记pushlink的数据为已读
     * @param param 查询参数map
     */
    void readPushList(Map<String, Object> param);

    /**
     * Description:根据传参删除pushlink的数据
     * @param param 查询参数map
     */
    void deletePushList(Map<String, Object> param);

    /**
     * Description:根据传参标记pushlink的的所有数据为已读
     * @param param 查询参数map
     */
    void readAllPushLink(Map<String, Object> param);

    /**
     * Description:用户脱离团队后删除未发送的消息
     * @param param 查询参数map
     */
    void apartTeam2DeleteMessage(Map<String, Object> param);

    /**
     * 删除pushlink根据推送id
     *
     * @param pushIds 推送id
     * @param corpid 公司id
     * @return 成功
     */
    Integer deleteByPushIdIn(List<Long> pushIds, String corpid);
}


